'''
哈希表的应用--集合与字典
    字典与集合都是通过哈希表来实现的.
        a = {'name':'Alex','age':'18','gender':'Man'}
    使用哈希表存储字典,通过哈希函数将字典的键映射为下标.假设h('name') = 3,h('age') = 1,
    h('gender') = 4,则哈希表存储为[None,18,None,'Alex','Man']
    如果发生哈希冲突,则通过拉链法或开发寻址法解决
'''
'''
哈希表的应用--md5算法
    MD5(Message-Digest Algorithm 5)曾经是密码学中常用的哈希函数,可以把任意长度的数据映射为128位的哈希值
    其曾经包含如下特征:
        1.同样的消息,其MD5值必定相同
        2.可以快速计算出任意给定消息的MD5值
        3.除非暴力的枚举所有的可能消息,否则不可能从哈希值反推出消息本身
        4.两条消息之间即使只有微小的差别,其对应的MD5值与应该是完全不同,完全不相关的
        5.不能在有意义的时间内人工的构造两个不同的消息,使其具有相同的MD5值
    应用举例:文件的哈希值
        算出文件的哈希值,若两个文件的哈希值相同,则可认为这两个文件时相同的,因此:
            1.用户可以用它来验证下载的文件是否完整.
            2.云存储服务商可以利用它来判断用户要上传的文件是否已经存在于服务器上,从而实现秒传的功能,同时避免存储过多相同的文件副本
'''